/*
 * @Author: hongbin
 * @Date: 2025-01-19 18:21:48
 * @LastEditors: hongbin
 * @LastEditTime: 2025-01-20 16:26:15
 * @Description:
 */
const preText = `
	B[329]  字节2

	B[330]  剪刀板通讯计数
	B[331]  
	331.00  剪刀1动作
	331.01   剪刀2动作
	331.02   电子废边动作
	331.03   剪刀测试
	331.04    剪刀校准
	331.05   剪刀单步
	331.06   废边测试
	331.07   剪刀3动作
	
	331.08      压边轮启动位
	331.09      压边轮方向位
	331.10      压边轮模式位 
	
	B[332]  剪刀板2通讯计数
	B[333]  剪刀板2备份
	B[334]  剪刀板1备份
	
	B[338]  剪刀1动作角度
	B[339]  剪刀2动作角度
	B[340]  剪刀3动作角度
	
	B[341]  
	341.00  自动抽纱第一步
	341.01  自动抽纱第二步
	341.02 自动抽纱第三步
	341.03  自动抽纱复位报警灯
	341.04  自动抽纱横吹纱电磁阀
	341.05  自动抽纱吸纱电磁阀
	341.06  自动抽纱压纱电磁阀
	341.07  自动抽纱剪刀电磁阀
	341.08  自检标记位
	
	341.09  电子剪刀联动位
	341.10  电子剪刀联动测试
	341.11  电子剪刀联动校准
	341.12  电子剪刀联动单步
`;

export function formatData(dataStr: string, update = false) {
    // 如果开头和结尾有 分号 弃掉
    if (dataStr[0] === "'" || dataStr[0] === '"') {
        dataStr = dataStr.substring(1);
    }

    const lastChat = dataStr[dataStr.length - 1];

    if (lastChat === "'" || lastChat === '"') {
        dataStr = dataStr.substring(0, dataStr.length - 1);
    }

    // 拆分行
    // const arr = update ? dataStr.split("\\n") : dataStr.split("\n\t");
    const arr = update ? dataStr.split("\n") : dataStr.split("\n\t");

    const docsObj: Record<string, Record<string, Record<string, string> | string>> = {};

    const reg = new RegExp(/(\d+)(\.)?(\d+)?([\]| ]+)?(\S+)?/);

    arr.forEach(text => {
        if (text.length) {
            const res = text.match(reg);

            if (res && res.length) {
                // console.log(res);

                if (!docsObj[res[1]]) {
                    docsObj[res[1]] = {};
                }

                // 单个数字 没有 .xx
                if (!res[2]) {
                    docsObj[res[1]].desc = res[5] || "未监测到";
                    docsObj[res[1]].line = text;
                } else if (!isNaN(Number(res[3]))) {
                    docsObj[res[1]][Number(res[3])] = {
                        desc: res[5],
                        line: text,
                    };
                }
            } else {
                console.warn(text + "未被解析");
            }
        }
    });

    return docsObj;
}

// 格式化文本 便捷查询
const docsObj = formatData(preText);

export default docsObj;
